package Controlador;

import java.util.*;
import java.io.*;

import Modelo.Equipo;
import Modelo.LigadeBeisbol;
import Modelo.Umpire;
import Vista.VistaRegistrarEquipo;
import Vista.VistaRegistrarUmpire;
import Modelo.Jugador;
import java.awt.event.*;
import java.awt.*;
import javax.swing.filechooser.*;

import java.io.BufferedReader;

public class ControladorEquipo implements ActionListener {
	private VistaRegistrarEquipo vistaequipo;
	Equipo equipo;
	private LigadeBeisbol liga;
	Vector<Jugador> vectorJugador = new Vector<Jugador>();
	ArrayList<Equipo> equipos1 = new ArrayList<Equipo>();

	public ControladorEquipo(LigadeBeisbol liga) {
		super();
		vistaequipo = new VistaRegistrarEquipo();
		vistaequipo.setLocationRelativeTo(null);
		vistaequipo.setVisible(true);
		vistaequipo.agregarListener(this);

		this.liga = liga;

	}

	public void actionPerformed(ActionEvent e) {
		String actionCommand = e.getActionCommand();
		if (actionCommand.equals("Registrar")) {
			registrar();

		} else if (actionCommand.equals("Cargar Jugadores")) {
			try {
				cargarjugadores();

			} catch (NumberFormatException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} else if (actionCommand.equals("Cancelar")) {
			vistaequipo.limpiarCampos();
		} else if (actionCommand.equals("Salir")) {
			vistaequipo.setVisible(false);
		}

		// TODO Auto-generated method stub

	}

	public void cargarjugadores() throws NumberFormatException, IOException {
		File f;
		javax.swing.JFileChooser j = new javax.swing.JFileChooser();
		j.showOpenDialog(j);

		String ruta = j.getSelectedFile().getAbsolutePath();
		String lectura = "";
		String aux = "";

		f = new File(ruta);

		FileReader fr = new FileReader(f);
		BufferedReader bf = new BufferedReader(fr);

		String cedula;
		String nombre;
		String apellido;
		String fechaNac;
		String posicion;
		Jugador jugador;

		try {
			while ((bf.readLine()) != null) {
				lectura = lectura + aux + "\n";

				cedula = bf.readLine();
				nombre = bf.readLine();
				apellido = bf.readLine();
				fechaNac = bf.readLine();
				posicion = bf.readLine();

				jugador = new Jugador(cedula, nombre, apellido, fechaNac, 0, 0,
						posicion);
				Jugador jugad = new Jugador(cedula, nombre, apellido, fechaNac);
				jugad.setCedula(cedula);
				jugad.setNombre(nombre);
				jugad.setApellido(apellido);
				jugad.setFechaNac(fechaNac);
				jugad.setPosicion(posicion);

				System.out.println(jugad.getCedula());
				System.out.println(jugad.getNombre());
				System.out.println(jugad.getApellido());
				System.out.println(jugad.getFechaNac());
				System.out.println(jugad.getPosicion());

				vectorJugador.addElement(jugador);
			}
			bf.close();
			vistaequipo
					.mostrarMensaje("se han cargado los jugadores al equipo.");

		} catch (Exception e) {
			// TODO: handle exception
			return;
		}

	}

	private void registrar() {
		for (int i = 0; i <= equipos1.size(); i++) {

			try {

				if (vistaequipo.gettxtCodigo().getText().equals("")
						|| vistaequipo.gettxtNombreEquipo().getText()
								.equals("")
						|| vistaequipo.gettxtFundacion().getText().equals("")
						|| vistaequipo.gettxtCiudad().getText().equals("")
						|| vistaequipo.gettxtEstadio().getText().equals(""))
					vistaequipo
							.mostrarMensaje("Debe llenar todos los datos para poder registrar un Equipo");
				else {

					String codigo = vistaequipo.gettxtCodigo().getText();
					String nombre = vistaequipo.gettxtNombreEquipo().getText();
					String fundacion = vistaequipo.gettxtFundacion().getText();
					String Estadio = vistaequipo.gettxtEstadio().getText();
					String ciudad = vistaequipo.gettxtCiudad().getText();

					// Equipo equipo = new Equipo(codigo, nombre,
					// fundacion,Estadio,ciudad,0,0,0,0,0);

					Equipo equipo = new Equipo(codigo, nombre, fundacion,
							Estadio, ciudad, 0, 0, 0, 0, 0, 0, null);
					// agregando los jugadores al equipo
					equipo.setJugadores(vectorJugador);

					liga.registrarEquipo(equipo);

					/*
					 * liga.equip.setCodEquipo(codigo);
					 * liga.equip.setNombre(nombre);
					 * liga.equip.setFundacion(fundacion);
					 * liga.equip.setNombreEstadio(Estadio);
					 * liga.equip.setCiudad(ciudad);
					 */

					vistaequipo
							.mostrarMensaje("se ha registrado el EQUIPO exitosamente");
					vistaequipo.limpiarCampos();

				}

			} catch (Exception e) {
				e.printStackTrace();
				vistaequipo
						.mostrarMensaje("No se pudo registrar el equipo, verifique que los datos sean correctos");
				vistaequipo.limpiarCampos();
			}

		}

	}
}
